# 父类：角色
class Character:
    def __init__(self, name, hp):
        self.name = name
        self.hp = hp
    
    def attack(self):
        print(f"{self.name} 普通攻击，造成 10 点伤害！")

    def is_alive(self):
        return self.hp > 0


# 子类：战士
class Warrior(Character):
    def __init__(self, name, hp, rage):
        super().__init__(name, hp)   # 调用父类的构造方法
        self.rage = rage            # 新增属性：怒气值

    # 重写 attack 方法
    def attack(self):
        if self.rage >= 10:
            print(f"{self.name} 释放【旋风斩】，造成 50 点伤害！")
            self.rage -= 10
        else:
            super().attack()  # 调用父类的普通攻击


# 子类：法师
class Mage(Character):
    def __init__(self, name, hp, mana):
        super().__init__(name, hp)
        self.mana = mana            # 新增属性：魔法值

    def attack(self):
        if self.mana >= 5:
            print(f"{self.name} 释放【火球术】，造成 30 点伤害！")
            self.mana -= 5
        else:
            print(f"{self.name} 魔力不足，使用普通攻击。")
            super().attack()


# 使用
w = Warrior("亚瑟", 100, 20)
m = Mage("莫甘娜", 80, 6)

w.attack()   # 亚瑟 释放【旋风斩】
m.attack()   # 莫甘娜 释放【火球术】
m.attack()   # 再放一次火球，魔力不足时用普通攻击